package com.example.scala.chapter2
import scala.collection.immutable

/**
 *
 * Description:
 *
 * Create by lucienoz on 2021/10/12.
 * Copyright © 2021 lucienoz. All rights reserved.
 */
object chapter04 {
  def main(args : Array[String]) : Unit = {
    //Scala中的字符串连接
    val foo : String = "foo"
    val bar : String = "bar"

    //通过+进行连接
    val foobar : String = foo + bar
    println(foobar) //foobar

    //通过调用String
    val foobar2 : String = foo.+ ( bar )
    println(foobar2) //foobar

    //此方法调用的StringOps with SeqLike的方法，后面的字符串进行Seq转化
    val foobar3 : immutable.IndexedSeq[Any] = foo +: bar
    println(foobar3)//Vector(foo, b, a, r)

    //此方法调用的StringOps with SeqLike的方法，前面的字符串进行Seq转化
    val foobar4 : immutable.IndexedSeq[Any] = foo :+ bar
    println(foobar4) //Vector(f, o, o, bar)

    //使用Scala变量$变量名替换拼接字符串,注意$在字符串格式s"$"中会成为关键字，应通过在$$的连用来打印$符
    val foobar5 : String = s"$foo$bar"
    println ( foobar5 ) //foobar

    // 使用Scala变量${变量名}替换拼接字符串 ,注意$在字符串格式s"$"中会成为关键字，应通过在$$的连用来打印$符
    val foobar6 : String = s"${foo}${bar}-$$"
    println ( foobar6 ) //foobar

    //多行字符串定义
    val foobarMargin : String =
      s"""
         |${foo} //可传参
         |${bar}
         |-test
       |""".stripMargin
    println(foobarMargin)
    //
    /*
    foo
    bar
    -test
     */

    val foobarMargin2 : String =s"""
      ^${foo}
      哈哈哈哈啊啊
      ^$bar
      ^""".stripMargin('^') //可自定义分割符,用来格式对齐

      println(foobarMargin2)
    //foo //头对齐
    //      哈哈哈哈啊啊 //头未对齐
    //bar //头对齐

    val strings : immutable.IndexedSeq[String] = foo.map ( char => char + "s" ) //使用Map方法将String转换成集合
    println ( strings ) //Vector(fs, os, os)

    println ( strings.mkString ) //fsosos //集合转换成String



  }


}
